﻿ #region Disclaimer/Info
 
 /////////////////////////////////////////////////////////////////////////////////////////////////
 //
 //   File:		IPostUrlBuilder.cs
 //   Website:		http://dexterblogengine.com/
 //   Authors:		http://dexterblogengine.com/About.ashx
 //   Rev:		1
 //   Created:		19/01/2011
 //   Last edit:		19/01/2011
 //   License:		GNU Library General Public License (LGPL)
 //   File:            IPostUrlBuilder.cs
 //   For updated news and information please visit http://dexterblogengine.com/
 //   Dexter is hosted to Codeplex at http://dexterblogengine.codeplex.com
 //   For any question contact info@dexterblogengine.com
 //
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 #endregion


using Dexter.DataTransferObject;
using Dexter.Domain.Model;

namespace Dexter.Services {
	public interface IPostUrlBuilder {
		/// <summary>
		/// Return the detail url of the specified <see cref="Item"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/archive/2009/05/19/My-Post/
		/// </example>
		string Detail ( Item item );

		/// <summary>
		/// Return the detail url of the specified <see cref="Item"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/archive/2009/05/19/My-Post/
		/// </example>
		string Detail ( PostDto item );

		/// <summary>
		/// Return the detail url of the specified <see cref="SearchItem"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/archive/2009/05/19/My-Post/
		/// </example>
		string Detail ( SearchItem item );

		/// <summary>
		/// Return the comment url of the specified <see cref="Item"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <returns></returns>
		string FeedBack ( PostDto item );

		/// <summary>
		/// Return the comment url of the specified <see cref="Item"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <returns></returns>
		string FeedBack ( Item item );

		/// <summary>
		/// Return the comment url of the specified <see cref="Item"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <returns></returns>
		string FeedBack ( PostLightDto item );

		/// <summary>
		/// Return the ur for for related contentl of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/related/2009/05/19/My-Post/
		/// </example>
		string RelatedPosts ( Post item );

		/// <summary>
		/// Return the ur for for related contentl of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/related/2009/05/19/My-Post/
		/// </example>
		string RelatedPosts ( PostDto item );

		/// <summary>
		/// Return the url for the specified month.
		/// </summary>
		/// <param name="month">The month.</param>
		/// <param name="year">The year.</param>
		/// <returns></returns>
		/// <example>
		/// http://dexterblogengine.com/blog/archives/posts/2010/8/
		/// </example>
		string ArchivePosts ( int month, int year );

		/// <summary>
		/// Return the print url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/print/2009/05/19/My-Post/
		/// </example>
		string Print ( Post item );

		/// <summary>
		/// Return the print url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name = "item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/print/2009/05/19/My-Post/
		/// </example>
		string Print ( PostDto item );

		/// <summary>
		/// Return the feed url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/fees/2009/05/19/My-Post/
		/// </example>
		string Feed ( Post item );

		/// <summary>
		/// Return the statistic url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/blog/statistics/2009/05/19/My-Post/
		/// </example>
		string Statistics ( Post item );

		/// <summary>
		/// Return the edit url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Edit ( Post item );

		/// <summary>
		/// Return the edit url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Edit ( PostDto item );

		/// <summary>
		/// Return the edit url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Edit ( SearchItem item );

		/// <summary>
		/// Return the delete url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Delete ( Post item );

		/// <summary>
		/// Return the delete url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Delete ( PostDto item );

		/// <summary>
		/// Return the delete url of the specified <see cref="Post"/>.
		/// </summary>
		/// <param name="item">The item.</param>
		/// <example>
		/// 	http://dexterblogengine.com/Admin/Posts/Edit/10/
		/// </example>
		string Delete ( SearchItem item );
	}
}
